파일 입출력과 스트림
✒️ 2025-05-15 13:22 내용 수정
입출력(I/O)
- 입력(Input) : 프로그램으로 들어오는 모든 값
- 출력(Output) : 출력되는 값
- Java에서는 입출력 처리를 위한 I/O 패키지가 있다
스트림(Stream)
디스크에서 데이터를 주고받는 실제의 입력이나 출력이 표현된 데이터의 흐름
- 운영체제에 의해 생성되는 가상의 연결 고리이자 중간 매개자 역할
- 스트림은 입출력 장치와 Java 프로그램 간의 연결 통로로, 스트림의 양 끝에서 전달된다.
- 스트림은 단방향 통신(한 방향으로만)이므로 입력 스트림과 출력 스트림을 별도로 사용해야 하고, FIFO 구조를 이루고 있다.
- 스트림 생성 = 스트림 클래스 타입의 인스턴스 생성!
- FIFO(First In First Out) 구조 : 먼저 들어온 데이터가 먼저 나가는 구조/스택
- LIFO(Last In First Out) : 뒤에 들어온 데이터가 먼저 나가는 구조/스택
- 연속된 데이터의 흐름으로 입출력 진행 중에는 다른 작업을 할 수 없는 상태가 된다.

| 클래스 | 메서드 | 설명 |
|---|---|---|
| InputStream | abstract int read() |
해당 입력 스트림으로부터 다음 바이트를 읽어드림. |
| InputStream | int read(byte[] b) |
해당 입력 스트림으로부터 특정 바이트를 읽어드린 후 배열 b에 저장 |
| OutputStream | abstract int write() |
해당 출력 스트림에 특정 바이트를 저장함. |
| OutputStream | int write(byte[] b) |
배열 b의 특정 바이트를 배열 b의 길이만큼 해당 출력 스트림에 저장 |
표준 입출력 System 클래스
- Java에서는 모든 것이 객체로 표현되기 때문에 입출력을 담당하는 수단도 모두 객체이다.
- 입출력을 담당하는 클래스. java.lang 패키지에 포함되어 있다.
- static variable로 System.in, System.out, System.error 가 정의되어 있다.
- System.in 스트림, System.out 스트림, System.error 스트림을 사용해서 표준 출력 작업을 수행한다.
System.in: InputStream, 콘솔로부터 데이터를 입력받는다.System.out: PrintStream, 콘솔로 데이터를 출력한다.System.err: PrintStream, 콘솔로 데이터를 출력한다.
System.out.println(출력할데이터);
print(): 출력println(): 출력 후 줄바꿈printf(): 서식문자 포함 출력
- 서식 문자 기호들과 이스케이프 문자
| 서식문자 기호 | 타입 | 이스케이프 문자 | 기능 |
|---|---|---|---|
%d |
int | \n |
줄바꿈 |
%f |
double | \t |
탭 |
%s |
String | \" |
"의 출력 |
%c |
char | \' |
'의 출력 |
%b |
boolean | ||
%.숫자 |
소수점 자릿수까지 출력 | ||
%0숫자 |
자릿수 맞추기 |
System.out.println("Hello World!")
System.out.printf("%d + %d = %d", 10, 23, 33); // 10 + 23 = 33
- 번외) C++에서는 cout 을 사용하였다
#include <iostream>
std::cout << "Hello World!" << endl;
TFile* file = new TFile(Form(%dMeVFile, 10));